home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 039a / mawk.zip / CODE.H < prev    next >
C/C++ Source or Header  |  1991-04-07  |  3KB  |  142 lines

  1.  
  2. /********************************************
  3. code.h
  4. copyright 1991, Michael D. Brennan
  5.  
  6. This is a source file for mawk, an implementation of
  7. the Awk programming language as defined in
  8. Aho, Kernighan and Weinberger, The AWK Programming Language,
  9. Addison-Wesley, 1988.
  10.  
  11. See the accompaning file, LIMITATIONS, for restrictions
  12. regarding modification and redistribution of this
  13. program in source or binary form.
  14. ********************************************/
  15.  
  16.  
  17. /* $Log:    code.h,v $
  18.  * Revision 2.1  91/04/08  08:22:48  brennan
  19.  * VERSION 0.97
  20.  * 
  21. */
  22.  
  23.  
  24. /*  code.h  */
  25.  
  26. #ifndef  CODE_H
  27. #define  CODE_H
  28.  
  29. #include "memory.h"
  30. #include <setjmp.h>
  31.  
  32. /* coding scope */
  33. #define   SCOPE_MAIN    0
  34. #define   SCOPE_BEGIN   1  
  35. #define   SCOPE_END     2
  36. #define   SCOPE_FUNCT   3
  37.  
  38.  
  39. extern  INST  *code_ptr ;
  40. extern  INST  *begin_start , *begin_code_ptr ;
  41. extern  INST  *end_start , *end_code_ptr ;
  42. extern  INST  *main_start, *main_code_ptr ;
  43. extern  unsigned begin_size, end_size, main_size ;
  44.  
  45. extern  CELL  eval_stack[] ;
  46.  
  47.  
  48. #define  code1(x)  code_ptr++ -> op = (x)
  49.  
  50. #define  code2(x,y)    (void)( code_ptr++ -> op = (x) ,\
  51.                          code_ptr++ -> ptr = (PTR)(y) )
  52.  
  53.  
  54. /*  the machine opcodes  */
  55.  
  56. #define _HALT            0
  57. #define _STOP            1
  58. #define _STOP0           2  
  59. #define _PUSHC           3
  60. #define _PUSHINT         4
  61. #define _PUSHA           5
  62. #define _PUSHI           6
  63. #define L_PUSHA          7
  64. #define L_PUSHI          8
  65. #define AE_PUSHA         9
  66. #define AE_PUSHI        10
  67. #define A_PUSHA         11
  68. #define LAE_PUSHA       12
  69. #define LAE_PUSHI       13
  70. #define LA_PUSHA        14
  71. #define F_PUSHA         15
  72. #define FE_PUSHA        16
  73. #define F_PUSHI         17
  74. #define FE_PUSHI        18
  75. #define _POP            19
  76. #define _PULL           20
  77. #define _DUP            21
  78. #define _ADD            22
  79. #define _SUB            23
  80. #define _MUL            24
  81. #define _DIV            25
  82. #define _MOD            26
  83. #define _POW            27
  84. #define _NOT            28
  85. #define _TEST           29
  86. #define A_TEST          30
  87. #define A_DEL           31
  88. #define A_LOOP          32
  89. #define A_CAT           33
  90. #define _UMINUS         34
  91. #define _UPLUS          35
  92. #define _ASSIGN         36
  93. #define _ADD_ASG        37
  94. #define _SUB_ASG        38
  95. #define _MUL_ASG        39
  96. #define _DIV_ASG        40
  97. #define _MOD_ASG        41
  98. #define _POW_ASG        42
  99. #define F_ASSIGN        43
  100. #define F_ADD_ASG       44
  101. #define F_SUB_ASG       45
  102. #define F_MUL_ASG       46
  103. #define F_DIV_ASG       47
  104. #define F_MOD_ASG       48
  105. #define F_POW_ASG       49
  106. #define _CAT            50
  107. #define _BUILTIN        51
  108. #define _PRINT          52
  109. #define _POST_INC       53
  110. #define _POST_DEC       54
  111. #define _PRE_INC        55
  112. #define _PRE_DEC        56
  113. #define F_POST_INC      57
  114. #define F_POST_DEC      58
  115. #define F_PRE_INC       59
  116. #define F_PRE_DEC       60
  117. #define _JMP            61
  118. #define _JNZ            62
  119. #define _JZ             63
  120. #define _EQ             64
  121. #define _NEQ            65
  122. #define _LT             66
  123. #define _LTE            67
  124. #define _GT             68
  125. #define _GTE            69
  126. #define _MATCH          70
  127. #define _EXIT           71
  128. #define _EXIT0          72
  129. #define _NEXT           73
  130. #define _RANGE          74
  131. #define _CALL           75
  132. #define _RET            76
  133. #define _RET0           77
  134.  
  135.  
  136. /* next and exit statements */
  137.  
  138. extern jmp_buf  exit_jump, next_jump ;
  139. extern int exit_code ;
  140.  
  141. #endif  /* CODE_H */
  142.